home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / CursorDevices.a < prev    next >
Text File  |  1996-05-01  |  8KB  |  282 lines

  1. ;
  2. ;    File:        CursorDevices.a
  3. ;
  4. ;    Contains:    Cursor Devices (mouse/trackball/etc) Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__CURSORDEVICES__') = 'UNDEFINED' THEN
  19. __CURSORDEVICES__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  25.     include 'MixedMode.a'
  26.     ENDIF
  27. ;
  28. ;                       * * *  W A R N I N G  * * * 
  29. ;
  30. ;    On currently shipping PowerMacs, the CursorDevices manager is implemented
  31. ;    in 68K code and emulated.  Unfortunately, the MixedMode glue in InterfaceLib
  32. ;    is incorrect.  It and the 1.0 version of this file had incorrect parameter
  33. ;    lists for most functions.
  34. ;    
  35. ;    As a first step to avoid runtime errors, the functions in this file were 
  36. ;    renamed (e.g. from"CrsrDevButtons" to "CursorDeviceButtons").  This will result
  37. ;    in a link time error if a PowerPC application tries to call the functions.
  38. ;    When InterfaceLib is fixed, the new names will be exported and PowerPC
  39. ;    code will then be able to call them.
  40. ;    
  41. ;
  42.     IF FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE THEN
  43. ; typedef short                         ButtonOpcode
  44.  
  45. ;  ButtonOpcodes 
  46.  
  47. kButtonNoOp                        EQU        0                    ; No action for this button 
  48. kButtonSingleClick                EQU        1                    ; Normal mouse button 
  49. kButtonDoubleClick                EQU        2                    ; Click-release-click when pressed 
  50. kButtonClickLock                EQU        3                    ; Click on press, release on next press 
  51.  
  52. kButtonCustom                    EQU        6                    ; Custom behavior, data = CursorDeviceCustomButtonUPP 
  53. ;  Device Classes 
  54.  
  55. kDeviceClassAbsolute            EQU        0                    ; a flat-response device 
  56. kDeviceClassMouse                EQU        1                    ; mechanical or optical mouse 
  57. kDeviceClassTrackball            EQU        2                    ; trackball 
  58.  
  59. kDeviceClass3D                    EQU        6                    ; a 3D pointing device 
  60. ;  Structures used in Cursor Device Manager calls 
  61. CursorData                RECORD 0
  62. nextCursorData             ds.l    1                ; offset: $0 (0)        ;  next in global list 
  63. displayInfo                 ds.l    1                ; offset: $4 (4)        ;  unused (reserved for future) 
  64. whereX                     ds.l    1                ; offset: $8 (8)        ;  horizontal position 
  65. whereY                     ds.l    1                ; offset: $C (12)        ;  vertical position 
  66. where                     ds        Point            ; offset: $10 (16)        ;  the pixel position 
  67. isAbs                     ds.b    1                ; offset: $14 (20)        ;  has been stuffed with absolute coords 
  68. buttonCount                 ds.b    1                ; offset: $15 (21)        ;  number of buttons currently pressed 
  69. screenRes                 ds.l    1                ; offset: $16 (22)        ;  pixels per inch on the current display 
  70. privateFields             ds.w    22                ; offset: $1A (26)        ;  fields use internally by CDM 
  71. sizeof                     EQU *                    ; size:   $46 (70)
  72.                         ENDR
  73. ; typedef struct CursorData *            CursorDataPtr
  74.  
  75. CursorDevice            RECORD 0
  76. nextCursorDevice         ds.l    1                ; offset: $0 (0)        ;  pointer to next record in linked list 
  77. whichCursor                 ds.l    1                ; offset: $4 (4)        ;  pointer to data for target cursor 
  78. refCon                     ds.l    1                ; offset: $8 (8)        ;  application-defined 
  79. unused                     ds.l    1                ; offset: $C (12)        ;  reserved for future 
  80. devID                     ds.l    1                ; offset: $10 (16)        ;  device identifier (from ADB reg 1) 
  81. resolution                 ds.l    1                ; offset: $14 (20)        ;  units/inch (orig. from ADB reg 1) 
  82. devClass                 ds.b    1                ; offset: $18 (24)        ;  device class (from ADB reg 1) 
  83. cntButtons                 ds.b    1                ; offset: $19 (25)        ;  number of buttons (from ADB reg 1) 
  84. filler1                     ds.b    1                ; offset: $1A (26)        ;  reserved for future 
  85. buttons                     ds.b    1                ; offset: $1B (27)        ;  state of all buttons 
  86. buttonOp                 ds.b    8                ; offset: $1C (28)        ;  action performed per button 
  87. buttonTicks                 ds.l    8                ; offset: $24 (36)        ;  ticks when button last went up (for debounce) 
  88. buttonData                 ds.l    8                ; offset: $44 (68)        ;  data for the button operation 
  89. doubleClickTime             ds.l    1                ; offset: $64 (100)        ;  device-specific double click speed 
  90. acceleration             ds.l    1                ; offset: $68 (104)        ;  current acceleration 
  91. privateFields             ds.w    15                ; offset: $6C (108)        ;  fields used internally to CDM 
  92. sizeof                     EQU *                    ; size:   $8A (138)
  93.                         ENDR
  94. ; typedef struct CursorDevice *            CursorDevicePtr
  95.  
  96. ;  for use with CursorDeviceButtonOp when opcode = kButtonCustom 
  97. ;
  98. ; pascal OSErr CursorDeviceMove(CursorDevicePtr ourDevice, long deltaX, long deltaY)
  99. ;
  100.     IF ¨ GENERATINGCFM THEN
  101.         Macro
  102.         _CursorDeviceMove
  103.             moveq               #0,D0
  104.             dc.w                $AADB
  105.         EndM
  106.     ELSE
  107.         IMPORT_CFM_FUNCTION CursorDeviceMove
  108.     ENDIF
  109.  
  110. ;
  111. ; pascal OSErr CursorDeviceMoveTo(CursorDevicePtr ourDevice, long absX, long absY)
  112. ;
  113.     IF ¨ GENERATINGCFM THEN
  114.         Macro
  115.         _CursorDeviceMoveTo
  116.             moveq               #1,D0
  117.             dc.w                $AADB
  118.         EndM
  119.     ELSE
  120.         IMPORT_CFM_FUNCTION CursorDeviceMoveTo
  121.     ENDIF
  122.  
  123. ;
  124. ; pascal OSErr CursorDeviceFlush(CursorDevicePtr ourDevice)
  125. ;
  126.     IF ¨ GENERATINGCFM THEN
  127.         Macro
  128.         _CursorDeviceFlush
  129.             moveq               #2,D0
  130.             dc.w                $AADB
  131.         EndM
  132.     ELSE
  133.         IMPORT_CFM_FUNCTION CursorDeviceFlush
  134.     ENDIF
  135.  
  136. ;
  137. ; pascal OSErr CursorDeviceButtons(CursorDevicePtr ourDevice, short buttons)
  138. ;
  139.     IF ¨ GENERATINGCFM THEN
  140.         Macro
  141.         _CursorDeviceButtons
  142.             moveq               #3,D0
  143.             dc.w                $AADB
  144.         EndM
  145.     ELSE
  146.         IMPORT_CFM_FUNCTION CursorDeviceButtons
  147.     ENDIF
  148.  
  149. ;
  150. ; pascal OSErr CursorDeviceButtonDown(CursorDevicePtr ourDevice)
  151. ;
  152.     IF ¨ GENERATINGCFM THEN
  153.         Macro
  154.         _CursorDeviceButtonDown
  155.             moveq               #4,D0
  156.             dc.w                $AADB
  157.         EndM
  158.     ELSE
  159.         IMPORT_CFM_FUNCTION CursorDeviceButtonDown
  160.     ENDIF
  161.  
  162. ;
  163. ; pascal OSErr CursorDeviceButtonUp(CursorDevicePtr ourDevice)
  164. ;
  165.     IF ¨ GENERATINGCFM THEN
  166.         Macro
  167.         _CursorDeviceButtonUp
  168.             moveq               #5,D0
  169.             dc.w                $AADB
  170.         EndM
  171.     ELSE
  172.         IMPORT_CFM_FUNCTION CursorDeviceButtonUp
  173.     ENDIF
  174.  
  175. ;
  176. ; pascal OSErr CursorDeviceButtonOp(CursorDevicePtr ourDevice, short buttonNumber, ButtonOpcode opcode, long data)
  177. ;
  178.     IF ¨ GENERATINGCFM THEN
  179.         Macro
  180.         _CursorDeviceButtonOp
  181.             moveq               #6,D0
  182.             dc.w                $AADB
  183.         EndM
  184.     ELSE
  185.         IMPORT_CFM_FUNCTION CursorDeviceButtonOp
  186.     ENDIF
  187.  
  188. ;
  189. ; pascal OSErr CursorDeviceSetButtons(CursorDevicePtr ourDevice, short numberOfButtons)
  190. ;
  191.     IF ¨ GENERATINGCFM THEN
  192.         Macro
  193.         _CursorDeviceSetButtons
  194.             moveq               #7,D0
  195.             dc.w                $AADB
  196.         EndM
  197.     ELSE
  198.         IMPORT_CFM_FUNCTION CursorDeviceSetButtons
  199.     ENDIF
  200.  
  201. ;
  202. ; pascal OSErr CursorDeviceSetAcceleration(CursorDevicePtr ourDevice, Fixed acceleration)
  203. ;
  204.     IF ¨ GENERATINGCFM THEN
  205.         Macro
  206.         _CursorDeviceSetAcceleration
  207.             moveq               #8,D0
  208.             dc.w                $AADB
  209.         EndM
  210.     ELSE
  211.         IMPORT_CFM_FUNCTION CursorDeviceSetAcceleration
  212.     ENDIF
  213.  
  214. ;
  215. ; pascal OSErr CursorDeviceDoubleTime(CursorDevicePtr ourDevice, long durationTicks)
  216. ;
  217.     IF ¨ GENERATINGCFM THEN
  218.         Macro
  219.         _CursorDeviceDoubleTime
  220.             moveq               #9,D0
  221.             dc.w                $AADB
  222.         EndM
  223.     ELSE
  224.         IMPORT_CFM_FUNCTION CursorDeviceDoubleTime
  225.     ENDIF
  226.  
  227. ;
  228. ; pascal OSErr CursorDeviceUnitsPerInch(CursorDevicePtr ourDevice, Fixed resolution)
  229. ;
  230.     IF ¨ GENERATINGCFM THEN
  231.         Macro
  232.         _CursorDeviceUnitsPerInch
  233.             moveq               #10,D0
  234.             dc.w                $AADB
  235.         EndM
  236.     ELSE
  237.         IMPORT_CFM_FUNCTION CursorDeviceUnitsPerInch
  238.     ENDIF
  239.  
  240. ;
  241. ; pascal OSErr CursorDeviceNextDevice(CursorDevicePtr *ourDevice)
  242. ;
  243.     IF ¨ GENERATINGCFM THEN
  244.         Macro
  245.         _CursorDeviceNextDevice
  246.             moveq               #11,D0
  247.             dc.w                $AADB
  248.         EndM
  249.     ELSE
  250.         IMPORT_CFM_FUNCTION CursorDeviceNextDevice
  251.     ENDIF
  252.  
  253. ;
  254. ; pascal OSErr CursorDeviceNewDevice(CursorDevicePtr *ourDevice)
  255. ;
  256.     IF ¨ GENERATINGCFM THEN
  257.         Macro
  258.         _CursorDeviceNewDevice
  259.             moveq               #12,D0
  260.             dc.w                $AADB
  261.         EndM
  262.     ELSE
  263.         IMPORT_CFM_FUNCTION CursorDeviceNewDevice
  264.     ENDIF
  265.  
  266. ;
  267. ; pascal OSErr CursorDeviceDisposeDevice(CursorDevicePtr ourDevice)
  268. ;
  269.     IF ¨ GENERATINGCFM THEN
  270.         Macro
  271.         _CursorDeviceDisposeDevice
  272.             moveq               #13,D0
  273.             dc.w                $AADB
  274.         EndM
  275.     ELSE
  276.         IMPORT_CFM_FUNCTION CursorDeviceDisposeDevice
  277.     ENDIF
  278.  
  279.     ENDIF
  280.     ENDIF ; __CURSORDEVICES__ 
  281.  
  282.